#pragma once

#include<iostream>
#include<string>

class Rationnel
{
public:
	Rationnel();
	Rationnel(int N);
	Rationnel(int N,int D);
	Rationnel(const Rationnel & r);
	Rationnel & operator=(const Rationnel & r);
		
	int GetNumerateur() const {return _num;}
	int GetDenominateur() const {return _den;}

	Rationnel operator+(const Rationnel &) const;
	Rationnel operator-(const Rationnel &) const;
	Rationnel operator*(const Rationnel &) const ;
	Rationnel operator/(const Rationnel &) const;

	bool operator==(const Rationnel &) const;
	bool operator>(const Rationnel &) const;
	bool operator>=(const Rationnel &) const;
	bool operator<(const Rationnel &) const;
	bool operator<=(const Rationnel &) const;

	std::string ToString() const;
protected:
	int _num;
	int _den;
	void canonise();
};

std::ostream & operator<<(std::ostream & flot,const Rationnel & R);





